package com.hb.B_面向对象.D_伴生对象_object


/**
 * 伴生对象
 * 类内部的对象声明可以用 companion 关键字标记:
 */
fun main() {
    //该伴生对象的成员可通过只使用类名作为限定符来调用:
    val instance = MyClass.create()

    val x = MyClass2.Companion
    println(x)
    println(x.create())
    x.create().test()


}

class MyClass {
    // companion object 中定义的成员类似于Java的静态成员，因为kotlin中没有static成员
    companion object Factory {
        fun create(): MyClass = MyClass()
    }
}

//可以省略伴生对象的名称，在这种情况下将使用名称 Companion :
class MyClass2 {
    companion object {
        fun create(): MyClass2 = MyClass2()
    }
    fun test(){
        println("test")
    }
}

